#pragma once
#ifndef SMPPVALIDATOR_HPP
#define SMPPVALIDATOR_HPP

#include "SMPPBind.hpp"
#include "SMPPBindResp.hpp"
#include "SMPPOutbind.hpp"
#include "SMPPUnbind.hpp"
#include "SMPPUnbindResp.hpp"
#include "SMPPEnquireLink.hpp"
#include "SMPPEnquireLinkResp.hpp"
#include "SMPPAlertNotification.hpp"
#include "SMPPGenericNack.hpp"
#include "SMPPSubmitSM.hpp"
#include "SMPPSubmitSMResp.hpp"
#include "SMPPDataSM.hpp"
#include "SMPPDataSMResp.hpp"
#include "SMPPSubmitMulti.hpp"
#include "SMPPSubmitMultiResp.hpp"
#include "SMPPDeliverSM.hpp"
#include "SMPPDeliverSMResp.hpp"
#include "SMPPBroadcastSM.hpp"
#include "SMPPBroadcastSMResp.hpp"
#include "SMPPCancelSM.hpp"
#include "SMPPCancelSMResp.hpp"
#include "SMPPQuerySM.hpp"
#include "SMPPQuerySMResp.hpp"
#include "SMPPReplaceSM.hpp"
#include "SMPPReplaceSMResp.hpp"
#include "SMPPQueryBroadcastSM.hpp"
#include "SMPPQueryBroadcastSMResp.hpp"
#include "SMPPCancelBroadcastSM.hpp"
#include "SMPPCancelBroadcastSMResp.hpp"

using namespace smpp::pdu;

namespace smpp{
namespace validator{

class SMPP_DLLPRFX Validator{
	quint32 _LastError;
public:
	const quint32 getLastError() const;

	bool _CommandLength(const quint32);

	bool _CommandId(const quint32);

	bool _SequenceNumber(const quint32);

	bool _CommandStatus(const quint32);

	bool _SystemId(const CoctetString &);

	bool _Password(const CoctetString &);

	bool _SystemType(const CoctetString &);

	bool _InterfaceVersion(const quint8);

	bool _AddrTON(const quint8);

	bool _AddrNPI(const quint8);

	bool _AddressRange(const CoctetString &);

	bool _ServiceType(const CoctetString &);

	bool _SourceAddrTON(const quint8);

	bool _SourceAddrNPI(const quint8);

	bool _SourceAddr21(const CoctetString &);

	bool _SourceAddr65(const CoctetString &);

	bool _DestAddrTON(const quint8);

	bool _DestAddrNPI(const quint8);

	bool _DestAddr21(const CoctetString &);

	bool _DestAddr65(const CoctetString &);

	bool _DestinationAddr(const CoctetString &);

	bool _DlName(const CoctetString &);

	bool _DestFlag(const quint8);

	bool _EsmClass(const quint8);

	bool _ProtocolId(const quint8);

	bool _PriorityFlag(const quint8);

	bool _ScheduleDeliveryTime(const CoctetString &);

	bool _ValidityPeriod(const CoctetString &);

	bool _RegisteredDelivery(const quint8);

	bool _ReplaceIfPresentFlag(const quint8);

	bool _DataCoding(const quint8);

	bool _SMDefaultMsgId(const quint8);

	bool _SMLength(const quint8);

	bool _ShortMessage(const octetString &);

	bool _MessageId(const CoctetString &);

	bool _MessageIdNull(const CoctetString &);

	bool _ESMEAddrTON(const quint8);

	bool _ESMEAddrNPI(const quint8);

	bool _ESMEAddr(const CoctetString &);

	bool _NumberOfDest(const quint8);

	bool _NoUnsuccess(const quint8);

	bool _FinalDate(const CoctetString &);

	bool _ErrorCode(const quint8);

	bool _ErrorStatusCode(const quint32);

	bool _AdditionalStatusInfoText(const AdditionalStatusInfoText &);

	bool _AlertOnMessageDelivery(const AlertOnMessageDelivery &);

	bool _BillingIdentification(const BillingIdentification &);

	bool _BroadcastAreaIdentifier(const BroadcastAreaIdentifier &);

	bool _BroadcastAreaSuccess(const BroadcastAreaSuccess &);

	bool _BroadcastChannelIndicator(const BroadcastChannelIndicator &);

	bool _BroadcastContentType(const BroadcastContentType &);

	bool _BroadcastContentTypeInfo(const BroadcastContentTypeInfo &);

	bool _BroadcastEndTime(const BroadcastEndTime &);

	bool _BroadcastErrorStatus(const BroadcastErrorStatus &);	

	bool _BroadcastFrequencyInterval(const BroadcastFrequencyInterval &);

	bool _BroadcastMessageClass(const BroadcastMessageClass &);

	bool _BroadcastRepNum(const BroadcastRepNum &);

	bool _BroadcastServiceGroup(const BroadcastServiceGroup &);

	bool _CallbackNum(const CallbackNum &);

	bool _CallbackNumAtag(const CallbackNumAtag &);

	bool _CallbackNumPresInd(const CallbackNumPresInd &);

	bool _CongestionState(const CongestionState &);

	bool _DeliveryFailureReason(const DeliveryFailureReason &);

	bool _DestAddrNpCountry(const DestAddrNpCountry &);

	bool _DestAddrNpInformation(const DestAddrNpInformation &);

	bool _DestAddrNpResolution(const DestAddrNpResolution &);

	bool _DestAddrSubunit(const DestAddrSubunit &);

	bool _DestBearerType(const DestBearerType &);

	bool _DestNetworkId(const DestNetworkId &);

	bool _DestNetworkType(const DestNetworkType &);

	bool _DestNodeId(const DestNodeId &);

	bool _DestPort(const DestPort &);

	bool _DestSubaddress(const DestSubaddress &);

	bool _DestTelematicsId(const DestTelematicsId &);

	bool _DisplayTime(const DisplayTime &);

	bool _DpfResult(const DpfResult &);

	bool _ItsReplyType(const ItsReplyType &);

	bool _ItsSessionInfo(const ItsSessionInfo &);

	bool _LanguageIndicator(const LanguageIndicator &);

	bool _MessagePayload(const MessagePayload &);

	bool _MessageState(const MessageState &);

	bool _MoreMessagesToSend(const MoreMessagesToSend &);

	bool _MsAvailabilityStatus(const MsAvailabilityStatus &);

	bool _MsMsgWaitFacilities(const MsMsgWaitFacilities &);

	bool _MsValidity(const MsValidity &);

	bool _NetworkErrorCode(const NetworkErrorCode &);

	bool _NumberOfMessages(const NumberOfMessages &);

	bool _PayloadType(const PayloadType &);

	bool _PrivacyIndicator(const PrivacyIndicator &);

	bool _QosTimeToLive(const QosTimeToLive &);

	bool _ReceiptedMessageId(const ReceiptedMessageId &);

	bool _SarMsgRefNum(const SarMsgRefNum &);

	bool _SarSegmentSeqnum(const SarSegmentSeqnum &);

	bool _SarTotalSegments(const SarTotalSegments &);

	bool _SrInterfaceVersion(const SrInterfaceVersion &);

	bool _SetDpf(const SetDpf &);

	bool _SmsSignal(const SmsSignal &);

	bool _SourceAddrSubunit(const SourceAddrSubunit &);

	bool _SourceBearerType(const SourceBearerType &);

	bool _SourceNetworkId(const SourceNetworkId &);

	bool _SourceNetworkType(const SourceNetworkType &);

	bool _SourceNodeId(const SourceNodeId &);

	bool _SourcePort(const SourcePort &);

	bool _SourceSubaddress(const SourceSubaddress &);

	bool _SourceTelematicsId(const SourceTelematicsId &);

	bool _UserMessageReference(const UserMessageReference &);

	bool _UserResponseCode(const UserResponseCode &);

	bool _UssdServiceOp(const UssdServiceOp &);

	bool _CancelBroadcastOptionalTLVs(const CancelBroadcastOptionalTLVs &);

	bool _QueryBroadcastRequestOptionalTLVs(
		const QueryBroadcastRequestOptionalTLVs &);

	bool _QueryBroadcastResponseOptionalTLVs(
		const QueryBroadcastResponseOptionalTLVs &);

	bool _MessageReplacementTLVs(const MessageReplacementTLVs &);

	bool _BroadcastRequestOptionalTLVs(
		const BroadcastRequestOptionalTLVs &);

	bool _BroadcastResponseOptionalTLVs(
		const BroadcastResponseOptionalTLVs &);

	bool _MessageDeliveryRequestTLVs(const MessageDeliveryRequestTLVs &);

	bool _MessageDeliveryResponseTLVs(const MessageDeliveryResponseTLVs &);

	bool _MessageSubmissionRequestTLVs(
		const MessageSubmissionRequestTLVs &);

	bool _MessageSubmissionResponseTLVs(
		const MessageSubmissionResponseTLVs &);

	bool _Bind(const Bind &);

	bool _BindResp(const BindResp &);

	bool _Outbind(const Outbind &);

	bool _Unbind(const Unbind &);

	bool _UnbindResp(const UnbindResp &);

	bool _EnquireLink(const EnquireLink &);

	bool _EnquireLinkResp(const EnquireLinkResp &);

	bool _AlertNotification(const AlertNotification &);

	bool _GenericNack(const GenericNack &);

	bool _SubmitSM(const SubmitSM &);

	bool _SubmitSMResp(const SubmitSMResp &);

	bool _DataSM(const DataSM &);

	bool _DataSMResp(const DataSMResp &);

	bool _SubmitMulti(const SubmitMulti &);

	bool _SubmitMultiResp(const SubmitMultiResp &);

	bool _DeliverSM(const DeliverSM &);

	bool _DeliverSMResp(const DeliverSMResp &);

	bool _BroadcastSM(const BroadcastSM &);

	bool _BroadcastSMResp(const BroadcastSMResp &);

	bool _CancelSM(const CancelSM &);

	bool _CancelSMResp(const CancelSMResp &);

	bool _QuerySM(const QuerySM &);

	bool _QuerySMResp(const QuerySMResp &);

	bool _ReplaceSM(const ReplaceSM &);

	bool _ReplaceSMResp(const ReplaceSMResp &);

	bool _QueryBroadcastSM(const QueryBroadcastSM &);

	bool _QueryBroadcastSMResp(const QueryBroadcastSMResp &);

	bool _CancelBroadcastSM(const CancelBroadcastSM &);

	bool _CancelBroadcastSMResp(const CancelBroadcastSMResp &);
};

}
}

#endif
